﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using CaroLibraly;

namespace CaroServer
{
    public partial class frmMainServer : Form
    {
        public bool ExitsPlayer;
        public frmMainServer()
        {
            InitializeComponent();
            CheckForIllegalCrossThreadCalls = false;
            this.ExitsPlayer = false;
        }


        private void frmMainServer_Load(object sender, EventArgs e)
        {

        }

        private ListViewItem GetPlayerItem(Player pl)
        {
            if (this.lstPlayer.Items.ContainsKey(pl.Ip))
                return this.lstPlayer.Items[pl.Ip];
            ListViewItem item;
            ListViewItem.ListViewSubItem subItem;

            item = new ListViewItem();
            item.Text = pl.Name;
            item.Name = pl.Ip;//Khóa để xác định người chơi nào

            subItem = new ListViewItem.ListViewSubItem();
            subItem.Text = pl.Ip;

            item.SubItems.Add(subItem);
            return item;
        }

        public void NewPlayerJoin(Player pl)
        {
            this.lstPlayer.Items.Add(this.GetPlayerItem(pl));
        }

        public void PlayerLeave(Player pl)
        {
            this.lstPlayer.Items.Remove(this.GetPlayerItem(pl));
            //this.lstPlayer.Items.RemoveByKey(pl.Ip);
        }

        public void NewRoomCreate(Room r)
        {
            ListViewItem item;
            ListViewItem.ListViewSubItem subItem;

            item = new ListViewItem();
            item.Text = r.Name;
            item.Name = r.Owner.Ip;//Khóa để xác định người chơi nào

            subItem = new ListViewItem.ListViewSubItem();
            subItem.Text = "1";

            item.SubItems.Add(subItem);

            this.lstRoom.Items.Add(item);
        }

        public void NewPlayerJoinRoom(Room r)
        {
            ListViewItem item = this.lstRoom.Items[r.Owner.Ip];
            ListViewItem.ListViewSubItem subItem = item.SubItems[1];
            subItem.Text = "2";
        }

        public void RemoveRom(Room r)
        {
            this.lstRoom.Items.RemoveByKey(r.Owner.Ip);
        }

        private void btnStart_Click(object sender, EventArgs e)
        {
            ServerNetwork.Start();
        }

        private void frmMainServer_FormClosing(object sender, FormClosingEventArgs e)
        {
            if (this.ExitsPlayer)
            {
                MessageBox.Show("Vẫn còn người chơi không thể thoát", "K được thoát!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                e.Cancel = true;
            }
        }
    }
}
